//
//  MainTabBar.swift
//  sinaweibo
//
//  Created by 沈勇 on 16/5/2.
//  Copyright © 2016年 沈勇. All rights reserved.
//

import UIKit

class MainTabBar: UITabBar {

   
    //默认构造方法
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupUI()
    }

    //如果重写了init（frame）系统会默认为这个控件是通过代码创建的。
    required init?(coder aDecoder: NSCoder) {
        //这是默认报错的语句
        //如果有调用者通过sb/xib 创建了该对象，这个时候程序就会崩溃
//        fatalError("init(coder:) has not been implemented")
        super.init(coder: aDecoder)
        setupUI()
    }
    
    //设置页面方法
    private func setupUI() {
        
        //添加撰写按钮
        addSubview(composeButton)
        
    }
    //子控件重写布局
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //手动修改所有按钮的位置
        //遍历所有子视图
        
        let w = self.bounds.width / 5
        let h = self.bounds.height
        let rect = CGRect(x: 0, y: 0, width: w, height: h)
        
        var index: CGFloat = 0
        for subview in subviews {
            
            if subview.isKindOfClass(NSClassFromString("UITabBarButton")!){
                //修改frame
                subview.frame = CGRectOffset(rect, w * index , 0)
                //三目运算
                index += index == 1 ? 2 : 1
                
            }
        }
        //上面代码的意思是：在layoutSubviews()方法中，先遍历，找到“UITabBarButton”类型的按钮，
        //重新设置他们的frame，并将中间位置(具体位置)预留出来
        composeButton.frame = CGRectOffset(rect, w * 2, 0)
        
        
    }
    
    //MARK:懒加载 撰写按钮
    lazy var composeButton: UIButton = {
       //UIButton() 是自定义样式的按钮
        let btn = UIButton()
        
        //设置按钮背景图片
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        
        //设置按钮图片
        btn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        btn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        btn.sizeToFit()
        
        return btn
    }()
    

}
